package cn.xwlin.controller;

import cn.xwlin.consts.Result;
import cn.xwlin.consts.TicketStatusConstant;
import cn.xwlin.entity.TicketInProgressInfo;
import cn.xwlin.mapper.TicketInProgressInfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RequestMapping("/start")
public class StartController {

    @Autowired
    private TicketInProgressInfoMapper ticketInProgressInfoMapper;

    @RequestMapping("/loginRefresh")
    public Result loginRefresh(String userId, String loginCode, String loginToken) {
        if (!StringUtils.hasLength(userId) || !StringUtils.hasLength(loginCode) || !StringUtils.hasLength(loginToken)) {
            return Result.failure("参数为空");
        }
        TicketInProgressInfo ticketInProgressInfo = ticketInProgressInfoMapper.selectByUserId(userId);
        Date now = new Date();
        if (ticketInProgressInfo == null) {
            ticketInProgressInfo = new TicketInProgressInfo();
            ticketInProgressInfo.setUserId(userId);
            ticketInProgressInfo.setLoginCode(loginCode);
            ticketInProgressInfo.setLoginToken(loginToken);
            ticketInProgressInfo.setStatus(TicketStatusConstant.STATUS_INIT);
            ticketInProgressInfo.setLastestFailedValidTime(now);
            ticketInProgressInfo.setTokenTime(now);
            ticketInProgressInfo.setCreateTime(now);
            ticketInProgressInfoMapper.insertSelective(ticketInProgressInfo);
        } else {
            TicketInProgressInfo updateDb = new TicketInProgressInfo();
            updateDb.setId(ticketInProgressInfo.getId());
            updateDb.setLoginCode(loginCode);
            updateDb.setLoginToken(loginToken);
            updateDb.setLastestFailedValidTime(now);
            updateDb.setTokenTime(now);
            ticketInProgressInfoMapper.updateByPrimaryKeySelective(updateDb);
        }
        return Result.success();
    }
}
